package cn.hchaojie.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import cn.hchaojie.domain.Post;

/**
 * 实现post表的增删改查
 * 
 * @author hchaojie
 *
 */
public interface PostMapper {
	void insert(Post post);
	void insert2(Post post);
	void insert3(Post post);
	
	void delete(int id);
	
	void update(Post post);
	
	/**
	 * 更新post，为null的属性不更新
	 * @param post
	 */
	void updateIgnoreNull(Post post);
	
	/**
	 * 根据id查post
	 */
	Post findById(int id);
	
	/**
	 * 根据title模糊查询
	 */
	List<Post> findByTitleLike(String title);
	
	/**
	 * 使用嵌套的pojo，封装多个查询参数
	 * @param post
	 * @return
	 */
	List<Post> findByCategoryAndTitle(Post post);
	
	/**
	 * 使用多个形参，传递多个查询参数
	 * 使用@Param注解，给参数指定一个名字
	 */
	List<Post> findByCidAndTitle(
			@Param("cid") int cid, 
			@Param("title") String title);
	
	/**
	 * 使用map结合传递多个参数
	 * 
	 */
	List<Post> findByMap(Map<String, Object> map);
	
	int getPostCount();
	
	Post findByIdResultMap(int id);
	
	/**
	 * 根据多个条件搜索post：title, content, created。可能有的条件是空的
	 */
	List<Post> findByCondition(Post post);
	
	/**
	 * 根据多个id查post文章
	 * @return
	 */
	List<Post> findByIds(int[] ids);
	
	void insertList(List<Post> posts);
	
	/**
	 * 根据分类id查询文章
	 * 
	 */
	List<Post> findByCategoryId(int cid);
	
	/**
	 * 查询文章，同时查询每个文章对应的分类
	 */
	List<Post> findAllWithCategory();
	
}
